HAL XSPI callback functions migration

This section provides information about the HAL XSPI callback functions migration.

Callback functions in non-blocking modes

HAL XSPI error callback

HAL1

HAL2

HAL_XSPI_ErrorCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_ErrorCallback(hal_xspi_handle_t *hxspi);

HAL XSPI abort completed callback

HAL1

HAL2

HAL_XSPI_AbortCpltCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_AbortCpltCallback(hal_xspi_handle_t *hxspi);

HAL XSPI FIFO threshold callback

HAL1

HAL2

HAL_XSPI_FifoThresholdCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_FifoThresholdCallback(hal_xspi_handle_t *hxspi);

HAL XSPI indirect mode callback functions

HAL XSPI command completed callback

HAL1

HAL2

HAL_XSPI_CmdCpltCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_CmdCpltCallback(hal_xspi_handle_t *hxspi);

HAL XSPI RX transfer completed callback

HAL1

HAL2

HAL_XSPI_RxCpltCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_RxCpltCallback(hal_xspi_handle_t *hxspi);

HAL XSPI TX transfer completed callback

HAL1

HAL2

HAL_XSPI_TxCpltCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_TxCpltCallback(hal_xspi_handle_t *hxspi);

HAL XSPI RX half completed callback

HAL1

HAL2

HAL_XSPI_RxHalfCpltCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_RxHalfCpltCallback(hal_xspi_handle_t *hxspi);

HAL XSPI TX half completed callback

HAL1

HAL2

HAL_XSPI_TxHalfCpltCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_TxHalfCpltCallback(hal_xspi_handle_t *hxspi);

HAL XSPI status flag polling mode function

HAL XSPI status match callback

HAL1

HAL2

HAL_XSPI_StatusMatchCallback(XSPI_HandleTypeDef *hxspi);
HAL_XSPI_StatusMatchCallback(hal_xspi_handle_t *hxspi);

HAL XSPI memory-mapped mode function

HAL XSPI timeout callback

HAL1

HAL2

HAL_XSPI_TimeOutCallback(XSPI_HandleTypeDef *hxspi);

Removed from HAL2.

The timeout event is now notified using the HAL_XSPI_ErrorCallback(hal_xspi_handle_t *hxspi) function with appropriate error code HAL_XSPI_ERROR_TIMEOUT.

Note

Error code can be retrieved from HAL_XSPI_GetLastErrorCodes().

HAL XSPI register/unregister callback functions

HAL XSPI register callback

In HAL1, the function HAL_XSPI_RegisterCallback() is used to register various XSPI callbacks through a single function with a specific callback ID, whereas, in HAL2, distinct functions are available to register each specific XSPI callback.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_TX_CPLT_CB_ID,
                          USER_XSPI_TxCpltCallback)
HAL_XSPI_RegisterTxCpltCallback(&hspi,
                                USER_XSPI_TxCpltCallback);

Rx Complete Callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_RX_CPLT_CB_ID,
                          USER_XSPI_RxCpltCallback)
HAL_XSPI_RegisterRxCpltCallback(&hspi,
                                USER_XSPI_RxCpltCallback);

Tx Half Complete Callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_TX_HALF_CPLT_CB_ID,
                          USER_XSPI_TxHalfCpltCallback);
HAL_XSPI_RegisterRxCpltCallback(&hspi,
                                USER_XSPI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_RX_HALF_CPLT_CB_ID,
                          USER_XSPI_RxHalfCpltCallback);
HAL_XSPI_RegisterRxCpltCallback(&hspi,
                                USER_XSPI_RxHalfCpltCallback);

XSPI error callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_ERROR_CB_ID,
                          USER_XSPI_ErrorCallback);
HAL_XSPI_RegisterErrorCallback(&hspi,
                               USER_XSPI_ErrorCallback);

XSPI abort callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_ABORT_CB_ID,
                          USER_XSPI_AbortCpltCallback);
HAL_XSPI_RegisterAbortCpltCallback(&hspi,
                                   USER_XSPI_AbortCpltCallback);

XSPI FIFO Threshold callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_FIFO_THRESHOLD_CB_ID,
                          USER_XSPI_FIFO_THRESHOLD_CpltCallback);
HAL_XSPI_RegisterFifoThresholdCallback(&hspi,
                                       USER_XSPI_FIFO_THRESHOLD_CpltCallback);

XSPI Command complete callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_CMD_CPLT_CB_ID,
                          USER_XSPI_Cmd_CpltCallback);
HAL_XSPI_RegisterCmdCpltCallback(&hspi,
                                 USER_XSPI_Cmd_CpltCallback);

XSPI Status match callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_STATUS_MATCH_CB_ID,
                          USER_XSPI_Status_Match_CpltCallback);
HAL_XSPI_RegisterStatusMatchCallback(&hspi,
                                     USER_XSPI_Status_Match_CpltCallback);

XSPI Timeout callback

HAL_XSPI_RegisterCallback(&hspi,
                          HAL_XSPI_TIMEOUT_CB_ID,
                          USER_XSPI_timeout_CpltCallback);
HAL_XSPI_RegisterErrorCallback(&hspi,
                               USER_XSPI_timeout_CpltCallback);

HAL XSPI unregister callback

In HAL2, the unregister callback API has been removed. Instead, callbacks can be managed by re-registering the default HAL XSPI weak callbacks as needed.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_TX_CPLT_CB_ID)
HAL_XSPI_RegisterTxCpltCallback(&hspi,
                                HAL_XSPI_TxCpltCallback);

Rx Complete Callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_RX_CPLT_CB_ID)
HAL_XSPI_RegisterRxCpltCallback(&hspi,
                                HAL_XSPI_RxCpltCallback);

Tx Half Complete Callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_TX_HALF_CPLT_CB_ID);
HAL_XSPI_RegisterRxCpltCallback(&hspi,
                                HAL_XSPI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_XSPI_UnRegisterCallback(&hspi,
                          HAL_XSPI_RX_HALF_CPLT_CB_ID);
HAL_XSPI_RegisterRxCpltCallback(&hspi,
                                HAL_XSPI_RxHalfCpltCallback);

XSPI error callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_ERROR_CB_ID);
HAL_XSPI_RegisterErrorCallback(&hspi,
                               HAL_XSPI_ErrorCallback);

XSPI abort callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_ABORT_CB_ID);
HAL_XSPI_RegisterAbortCpltCallback(&hspi,
                                   HAL_XSPI_AbortCpltCallback);

XSPI FIFO Threshold callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_FIFO_THRESHOLD_CB_ID);
HAL_XSPI_RegisterFifoThresholdCallback(&hspi,
                                       HAL_XSPI_FifoThresholdCallback);

XSPI Command complete callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_CMD_CPLT_CB_ID);
HAL_XSPI_RegisterCmdCpltCallback(&hspi,
                                 HAL_XSPI_CmdCpltCallback);

XSPI Status match callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_STATUS_MATCH_CB_ID);
HAL_XSPI_RegisterStatusMatchCallback(&hspi,
                                     HAL_XSPI_StatusMatchCallback);

XSPI Timeout callback

HAL_XSPI_UnRegisterCallback(&hspi,
                            HAL_XSPI_TIMEOUT_CB_ID);
HAL_XSPI_RegisterErrorCallback(&hspi,
                               HAL_XSPI_ErrorCallback);

Related concept: Individual callback registration APIs replace global register and unregister functions